/**
 * 寄养预约页面
 * 功能：门店选择、房型筛选、房型展示、预约跳转
 * 作者：开发团队
 * 日期：2024
 */
const apiService = require('../../../utils/api.js');

Page({

	/**
	 * 页面数据
	 */
	data: {
		// ========== 系统状态 ==========
		statusBarHeight: 0, // 系统状态栏高度（动态获取）
		
		// 导航栏滚动状态
		scrollY: 0,
		navbarOpacity: 0,  // 导航栏背景透明度 (0-1)
		navbarTextColor: '#FFFFFF', // 导航栏文字颜色
		
		// ========== 门店信息 ==========
		currentStore: {
			id: null,
			name: '加载中...'
		},
		storeList: [],
		
		// ========== 房型选项卡 ==========
	roomTabs: [
		{ id: 'small', name: '小单间', active: true, icon: '/assets/booking/icon_small_room.png', current_icon: '/assets/booking/icon_small_room_cur.png' },
		{ id: 'medium', name: '中单间', active: false, icon: '/assets/booking/icon_mid_room.png', current_icon: '/assets/booking/icon_mid_room_cur.png' },
		{ id: 'large', name: '大单间', active: false, icon: '/assets/booking/icon_big_room.png', current_icon: '/assets/booking/icon_big_room_cur.png' }
	],
		currentTab: 'small', // 当前选中的房型类型
		
		// ========== 房型数据 ==========
		// TODO: 接入房型API，替换为真实数据
		roomList: [
			// {
			// 	id: 1,
			// 	type: 'small',
			// 	name: '小单间',
			// 	desc: '尺寸建议：小型犬、猫咪',
			// 	price: 108.00,
			// 	unit: '/只/天/不含粮',
			// 	image: '/assets/booking/icon_small_room.png'
			// },
			// {
			// 	id: 2,
			// 	type: 'small',
			// 	name: '小单间',
			// 	desc: '尺寸建议：小型犬、猫咪',
			// 	price: 108.00,
			// 	unit: '/只/天/不含粮',
			// 	image: '/assets/booking/icon_small_room.png'
			// },
			// {
			// 	id: 3,
			// 	type: 'medium',
			// 	name: '中单间',
			// 	desc: '尺寸建议：中型犬',
			// 	price: 158.00,
			// 	unit: '/只/天/不含粮',
			// 	image: '/assets/booking/icon_mid_room.png'
			// },
			// {
			// 	id: 4,
			// 	type: 'large',
			// 	name: '大单间',
			// 	desc: '尺寸建议：大型犬',
			// 	price: 208.00,
			// 	unit: '/只/天/不含粮',
			// 	image: '/assets/booking/icon_big_room.png'
			// }
		],
		
		// ========== 页面状态 ==========
		currentRoomList: [], // 当前展示的房型列表（根据选项卡筛选）
		isEmpty: false // 是否显示空态
	},

	// ==================== 生命周期方法 ====================
	
	/**
	 * 页面加载
	 * @param {Object} options 页面参数
	 */
	onLoad(options) {
		console.log('=== foster-care 页面 onLoad ===', options);
		this.initPage();
		
		// 加载店铺信息
		this.loadStoreInfo();
		
		// 初始化房型列表
		this.filterRoomList();
		
		// 根据页面参数处理业务逻辑（如传入的门店ID等）
		if (options.storeId) {
			// 处理指定门店的逻辑
			console.log('处理指定门店ID:', options.storeId);
		}
		
		// 确保页面数据正确初始化
		console.log('页面初始化完成，当前数据状态:', {
			currentTab: this.data.currentTab,
			roomListLength: this.data.roomList.length,
			currentRoomListLength: this.data.currentRoomList.length,
			isEmpty: this.data.isEmpty
		});
	},
	initPage() {
		// 获取系统信息，适配不同设备
		wx.getSystemInfo({
			success: (res) => {
				const menu = wx.getMenuButtonBoundingClientRect();
				this.setData({
					menuTop: menu.top,
					menuHeight: menu.height,
					menuRight: res.windowWidth - menu.left,
					statusBarHeight: res.statusBarHeight || 44
				});
			},
			fail: () => {
				console.warn('获取系统信息失败，使用默认状态栏高度');
			}
		});

	},
	// ==================== 业务方法 ====================
	
	/**
	 * 根据当前选项卡筛选房型列表
	 */
	filterRoomList() {
		const { roomList, currentTab } = this.data;
		console.log('筛选房型列表 - 当前选项卡:', currentTab);
		console.log('原始房型列表:', roomList);
		
		const currentRoomList = roomList.filter(room => room.type === currentTab);
		console.log('筛选后的房型列表:', currentRoomList);
		
		this.setData({
			currentRoomList,
			isEmpty: currentRoomList.length === 0
		});
		
		console.log('设置完成 - isEmpty:', currentRoomList.length === 0);
	},
	
	/**
	 * 加载店铺信息
	 */
	loadStoreInfo() {
		(async () => {
				const storeManager = getApp().getStoreManager();
				const storeList = await storeManager.getStoreList();
				return { success: true, data: storeList };
			})()
			.then(res => {
				if (res.success && res.data && res.data.length > 0) {
					this.setData({
						storeList: res.data,
						currentStore: res.data[0] // 默认选择第一个店铺
					});
					// 加载房型数据
					this.loadRoomData();
				} else {
					console.error('获取店铺列表失败或数据为空');
					wx.showToast({
						title: '获取店铺信息失败',
						icon: 'none'
					});
				}
			})
			.catch(error => {
				console.error('加载店铺信息失败:', error);
				wx.showToast({
					title: '网络错误，请重试',
					icon: 'none'
				});
			});
	},

	/**
	 * 加载房型数据
	 */
	loadRoomData() {
		const { currentStore } = this.data;
		
		// 优先使用数字类型的storeId，这样后端就不需要做ID映射了
		const storeId = currentStore.storeId || currentStore.id || currentStore._id;
		if (!storeId) {
			console.log('当前店铺ID为空，跳过加载房型数据');
			return;
		}
		
		console.log('开始加载寄养房间数据，门店ID:', storeId, '类型:', typeof storeId);
		
		// 使用新的寄养房间接口
		apiService.getStoreFosterRooms(storeId)
			.then(res => {
				console.log('寄养房间API返回结果:', res);
				if (res.success && Array.isArray(res.data)) {
					// 将寄养房间数据映射为房型展示数据
					const roomList = res.data.map(room => {
						// 直接使用数据库中的roomType字段，并处理可能的映射
						let roomType = room.roomType || 'small';
						const roomName = room.roomName || room.name || '';
						
						// 处理特殊的roomType值映射
						if (roomType === 'temp_medium') {
							roomType = 'medium';
						} else if (roomType === 'temp_large') {
							roomType = 'large';
						}
						// 如果roomType不是标准值，则根据房间名称判断
						else if (!['small', 'medium', 'large'].includes(roomType)) {
							if (roomName.includes('中型') || roomName.includes('中单间') || roomName.includes('中寄养')) {
								roomType = 'medium';
							} else if (roomName.includes('大型') || roomName.includes('大单间') || roomName.includes('大寄养')) {
								roomType = 'large';
							} else {
								roomType = 'small';
							}
						}
						
						// 根据数据库unit字段生成价格单位显示
					let unitDisplay = '/只/天'; // 默认单位
					if (room.unit) {
						if (room.unit === '小时') {
							unitDisplay = '/只/小时';
						} else if (room.unit === '天') {
							unitDisplay = '/只/天';
						} else {
							// 其他单位直接使用
							unitDisplay = '/只/' + room.unit;
						}
					}
					
					return {
						id: room._id,
						type: roomType,
						name: roomName,
						desc: room.description || '',
						price: typeof room.price === 'number' ? room.price / 100 : room.price,
						unit: unitDisplay,
						image: room.image || this.getDefaultRoomImage(roomType),
						capacity: room.capacity || 1,
						features: room.features || []
					};
					});
					
					console.log('处理后的房型列表:', roomList);
					this.setData({ roomList }, () => {
						// 重新筛选房型列表
						this.filterRoomList();
					});
				} else {
					console.error('获取寄养房间列表失败:', res);
					wx.showToast({
						title: '获取房型信息失败',
						icon: 'none'
					});
				}
			})
			.catch(error => {
				console.error('加载寄养房间数据失败:', error);
				wx.showToast({
					title: '网络错误，请重试',
					icon: 'none'
				});
			});
	},

	/**
	 * 获取默认房间图片
	 * @param {string} roomType 房间类型
	 */
	getDefaultRoomImage(roomType) {
		const imageMap = {
			'small': '/assets/booking/icon_small_room.png',
			'medium': '/assets/booking/icon_mid_room.png',
			'large': '/assets/booking/icon_big_room.png'
		};
		return imageMap[roomType] || imageMap['small'];
	},

	// ==================== 交互事件 ====================
	
	/**
	 * 返回首页
	 */
	onBack() {
		wx.switchTab({
			url: '/pages/home/index/index',
			success: () => {
				console.log('返回首页成功')
			},
			fail: (error) => {
				console.error('返回首页失败:', error)
				// 降级处理：使用navigateBack
				wx.navigateBack()
			}
		});
	},
	
	/**
	 * 切换门店
	 * 跳转到地址选择页面
	 */
	onStoreChange() {
		// 跳转到地址选择页面
		wx.navigateTo({
			url: '/pages/booking/select-address/index',
			success: () => {
				console.log('跳转到地址选择页面成功');
			},
			fail: (error) => {
				console.error('跳转到地址选择页面失败：', error);
				// 降级处理：显示门店选择ActionSheet
				this.showStoreActionSheet();
			}
		});
	},

	/**
	 * 显示门店选择ActionSheet（降级处理）
	 */
	showStoreActionSheet() {
		const { storeList } = this.data;
		
		// 如果没有店铺数据，提示用户
		if (!storeList || storeList.length === 0) {
			wx.showToast({
				title: '暂无店铺信息',
				icon: 'none'
			});
			return;
		}
		
		const storeNames = storeList.map(store => store.name);
		
		wx.showActionSheet({
			itemList: storeNames,
			success: (res) => {
				const selectedStore = storeList[res.tapIndex];
				this.setData({
					currentStore: selectedStore
				});
				
				// 显示切换成功提示
				wx.showToast({
					title: `已切换到${selectedStore.name}`,
					icon: 'success'
				});
				
				// 数据埋点：门店切换
				wx.reportEvent('booking_store_change', {
					store_id: selectedStore._id || selectedStore.id
				});
				
				// 重新加载该门店的房型数据
				this.loadRoomData();
			}
		});
	},
	
	/**
	 * 切换房型选项卡
	 * @param {Object} e 事件对象，包含选中的tab信息
	 */
	onTabChange(e) {
		const { tab } = e.currentTarget.dataset;
		const { roomTabs } = this.data;
		
		// 更新选项卡状态
		const updatedTabs = roomTabs.map(item => ({
			...item,
			active: item.id === tab
		}));
		
		this.setData({
			roomTabs: updatedTabs,
			currentTab: tab
		});
		
		// 数据埋点：选项卡点击
		wx.reportEvent('booking_tab_click', {
			tab_name: tab
		});
		
		// 重新筛选房型列表
		this.filterRoomList();
	},
	
	/**
	 * 预约房型
	 * @param {Object} e 事件对象，包含房型信息
	 */
	onBookRoom(e) {
		console.log('=== onBookRoom 被调用 ===', e);
		
		const { room } = e.currentTarget.dataset;
		console.log('获取到的房型数据:', room);
		
		// 检查房型数据是否存在
		if (!room) {
			console.error('房型数据不存在:', e.currentTarget.dataset);
			wx.showToast({
				title: '房型数据异常，请重试',
				icon: 'none'
			});
			return;
		}
		
		// 数据埋点：房型预约点击
		try {
			wx.reportEvent('booking_room_click', {
				room_type: room.type,
				price: room.price
			});
		} catch (error) {
			console.warn('数据埋点失败:', error);
		}
		
		// 不清除旧的寄养表单缓存，保留用户已填写的信息（联系人、电话、备注等）
		// 只更新房型相关的缓存数据
		const existingFormData = wx.getStorageSync('foster_care_form_data') || {};
		const selectedRoomName = room.name || room.roomType || '';
		const selectedRoomPrice = room.price || 0;
		const selectedRoomUnit = room.unit || '天';
		
		console.log('=== 选择房型数据确认 ===');
		console.log('房间名称:', selectedRoomName);
		console.log('房间价格:', selectedRoomPrice);
		console.log('房间单位:', selectedRoomUnit);
		console.log('完整房间对象:', room);
		
		existingFormData.roomType = selectedRoomName;
		existingFormData.pricePerDay = selectedRoomPrice;
		existingFormData.roomUnit = selectedRoomUnit;
		existingFormData.timestamp = Date.now();
		wx.setStorageSync('foster_care_form_data', existingFormData);
		
		// 确保传递的room对象包含正确的name和price
		const roomDataToPass = {
			name: selectedRoomName, // 确保使用正确的名称
			roomType: selectedRoomName, // 兼容字段
			price: selectedRoomPrice, // 确保使用正确的价格
			unit: selectedRoomUnit, // 确保使用正确的单位
			id: room.id, // 保留房间ID
			type: room.type // 保留房间类型
		};
		
		// 跳转到寄养详情页面，携带房型信息与门店ID
		const roomData = encodeURIComponent(JSON.stringify(roomDataToPass));
		const storeId = this.data.currentStore._id || this.data.currentStore.id;
		console.log('即将跳转到详情页，处理的房型数据:', roomDataToPass, 'storeId:', storeId);
		
		// 使用 navigateBack 返回上一页（如果是从详情页跳转过来的），否则使用 navigateTo
		const pages = getCurrentPages();
		const prevPage = pages[pages.length - 2];
		const isFromDetailPage = prevPage && prevPage.route === 'pages/booking/foster-care-detail/index';
		
		// 使用特殊的缓存键来标记房型已更新，供详情页onShow时检测
		wx.setStorageSync('foster_room_updated', true);
		wx.setStorageSync('foster_room_update_data', roomDataToPass);
		
		if (isFromDetailPage) {
			// 从详情页跳转来的，返回上一页（房型数据已保存在缓存中，onShow会自动检测）
			wx.navigateBack({
				delta: 1,
				success: () => {
					console.log('返回详情页面成功，房型数据已保存到缓存:', roomDataToPass);
				},
				fail: (error) => {
					console.error('返回详情页面失败:', error);
					// 降级：使用 navigateTo
					wx.navigateTo({
						url: `/pages/booking/foster-care-detail/index?roomData=${roomData}&storeId=${storeId}`
					});
				}
			});
		} else {
			// 首次进入，使用 navigateTo
			wx.navigateTo({
				url: `/pages/booking/foster-care-detail/index?roomData=${roomData}&storeId=${storeId}`,
				success: () => {
					console.log('跳转到寄养详情页面成功');
				},
				fail: (error) => {
					console.error('跳转到寄养详情页面失败:', error);
					wx.showToast({
						title: '跳转失败，请重试',
						icon: 'none'
					});
				}
			});
		}
	},
	
	/**
	 * 刷新数据（空态页面的刷新按钮）
	 */
	onRefresh() {
		// 重新加载房型数据
		this.loadRoomData();
	},



	// ==================== 其他生命周期方法 ====================
	// 如需要其他生命周期方法，可在此处添加：
	// ==================== 工具方法 ====================

	// ==================== 生命周期方法（可选实现） ====================
	// onReady() - 页面初次渲染完成
	/**
	 * 页面滚动监听
	 */
	onPageScroll(e) {
		const scrollY = e.scrollTop;
		
		// 计算导航栏背景透明度，滚动距离0-100px内从透明变为不透明
		const maxScrollDistance = 100; // 滚动距离阈值（像素）
		const opacity = Math.min(scrollY / maxScrollDistance, 1);
		
		// 计算文字颜色，透明度达到0.5时开始变黑
		const textColor = opacity >= 0.5 ? '#120E0C' : '#FFFFFF';
		
		// 只有在透明度或文字颜色发生变化时才更新
		if (this.data.navbarOpacity !== opacity || this.data.navbarTextColor !== textColor) {
			this.setData({
				scrollY: scrollY,
				navbarOpacity: opacity,
				navbarTextColor: textColor
			});
		}
	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {
		// foster-care 页面不是 TabBar 页面，无需设置 TabBar 状态
		console.log('foster-care 页面显示');
	}
	
	// ==================== 其他生命周期方法（可选实现） ====================
	// onReady() - 页面初次渲染完成
	// onHide() - 页面隐藏时
	// onUnload() - 页面卸载时
	// onPullDownRefresh() - 下拉刷新
	// onReachBottom() - 上拉触底
	// onShareAppMessage() - 分享功能
})